Fechadas. Esta questão precisa de detalhes ou clareza. Atualmente não está aceitando respostas. Quer melhorar esta questão? Adicione detalhes e esclareça o problema editando esta postagem. Fechado há 1 ano. Melhore esta questão Estou fazendo alguns desafios de código e quero obter os 3 primeiros valores do meu array especificando o índice inicial e obtendo apenas os primeiros (3 ou pode ter qualquer comprimento) valores do índice inicial. Tentei este código e está funcionando, mas a estrutura do código é muito longa, então como posso torná-lo mais curto para que seja fácil de entender. int n = 10; assinatura dupla = nova dupla [] {1, 1, 1}; duplo [] ret = novo duplo [n]; soma dupla = 0; ret [0] = assinatura [0]; ret [1] = assinatura [1]; ret [2] = assinatura [2]; int x, i; para (i = 0; i
2021-01-31 08:20:55
Usando o LINQ, você pode tentar algo assim: valores var = array.Skip (índice) .Ocupado) .ToArray (); Onde índice é o índice do primeiro item eno número de itens que você deseja selecionar. Por exemplo. https://dotnetfiddle.net/Pk1rwY Como uma nota rodapé. Usar LINQ não significa que seu código seria mais rápido. Seria mais compacto / legível etc. Para avaliar o quão performant é o seu código, você tem que usar algo como BenchmarkDotNet. | Sem solução Linq: private static T [] Extrair(fonte T [], int do índice, comprimento interno) { if (null == source) lance novo ArgumentNullException (nameof (source)); else if (fromIndex <0) lance novo ArgumentOutOfRangeException (nameof (fromIndex), "Do índice deve ser não negativo"); else if (comprimento <0) lance novo ArgumentOutOfRangeException (nameof (length), "O comprimento deve ser não negativo"); if (fromIndex> = source.Length || length == 0) retornar novo T [0]; T [] resultado = novo T [Math.Min (length, source.Length - fromIndex)]; Array.Copy (fonte, fromIndex, result, 0, result.Length); resultado de retorno; } Então dupla [] assinatura = novo duplo [] {0, 1, 2, 3, 4, 5}; double [] ret = Extrair (assinatura, 3, 2); Console.Write (string.Join (",", ret)); Resultado: 3, 4 | A partir de sua dúvida, você precisa aproveitar as vantagens dos operadores .Take e .Skip. var result = array.Skip (StartingIndex) .Take (numberOfElements); Portanto, pelo seu código, parece que você está tentando fazer algo um pouco diferente, ou seja, somar elementos. O operador .Sum pode ser útil aqui. | Não é a resposta que você está procurando? Navegue por outras questões com a tag c # arrays linq ou faça sua própria pergunta.